From 6663bba3a20065614d852b6436366c5d9d21a7b3 Mon Sep 17 00:00:00 2001 From: "kfraser@localhost.localdomain" Date: Wed, 25 Apr 2007 09:49:18 +0100 Subject: [PATCH] libxc: Fix xc_translate_foreign_address() to parse non-pae pagetables correctly. From: Chris Morrow Signed-off-by: Keir Fraser --- tools/libxc/xc_pagetab.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/libxc/xc_pagetab.c b/tools/libxc/xc_pagetab.c index 85b3d15800..e67a34ae8f 100644 --- a/tools/libxc/xc_pagetab.c +++ b/tools/libxc/xc_pagetab.c @@ -132,7 +132,7 @@ unsigned long xc_translate_foreign_address(int xc_handle, uint32_t dom, if (pt_levels >= 3) pde = *(unsigned long long *)(pd + 8 * ((virt >> L2_PAGETABLE_SHIFT_PAE) & L2_PAGETABLE_MASK_PAE)); else - pde = *(unsigned long long *)(pd + 4 * ((virt >> L2_PAGETABLE_SHIFT) & L2_PAGETABLE_MASK)); + pde = *(unsigned long *)(pd + 4 * ((virt >> L2_PAGETABLE_SHIFT) & L2_PAGETABLE_MASK)); if ((pde & 1) == 0) { DPRINTF("page entry not present in PD\n"); @@ -156,9 +156,9 @@ unsigned long xc_translate_foreign_address(int xc_handle, uint32_t dom, if (pt_levels >= 3) pte = *(unsigned long long *)(pt + 8 * ((virt >> L1_PAGETABLE_SHIFT_PAE) & L1_PAGETABLE_MASK_PAE)); else - pte = *(unsigned long long *)(pt + 4 * ((virt >> L1_PAGETABLE_SHIFT) & L1_PAGETABLE_MASK)); + pte = *(unsigned long *)(pt + 4 * ((virt >> L1_PAGETABLE_SHIFT) & L1_PAGETABLE_MASK)); - if ((pte & 0x00000001) == 0) { + if ((pte & 1) == 0) { DPRINTF("page entry not present in PT\n"); goto out_unmap_pt; } -- 2.30.2